
namespace Patterns4Net.Attributes.DesignPatterns
{
    using System;

    /// <summary>
    /// Use this attribute to annotate a type as an implementation of the Bridge design pattern.
    /// </summary>
    [AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = true)]
    public class BridgeAttribute : Attribute, IPatternAttribute
    {
        /// <summary>
        /// Gets or sets the implementor interface, which should be implemented by the Bridge.
        /// </summary>
        public Type Implementor { get; set; }

        /// <summary>
        /// Gets or sets the type of the wrapped object. 
        /// Leave null, if the Bridge does not wrap existing C# interface or class.
        /// </summary>
        public Type WrappedType { get; set; }
    }
}
